//! # RustCloud Kubernetes - 云原生支持
//!
//! RustCloud Kubernetes 模块提供与 Kubernetes 集群的深度集成，
//! 支持服务发现、配置管理、健康检查等云原生功能。
//!
//! ## 核心特性
//!
//! * **Kubernetes API 客户端** - 与 K8s API 服务器交互
//! * **服务发现** - 基于 Kubernetes 服务的自动发现
//! * **配置管理** - ConfigMap 和 Secret 集成
//! * **健康检查** - 云原生健康检查端点
//! * **Operator 支持** - 自定义资源和控制器
//! * **优雅关闭** - 响应 SIGTERM 信号的优雅关闭
//!
//! ## 快速开始
//!
//! ```rust,no_run
//! use rustcloud_kubernetes::prelude::*;
//!
//! #[tokio::main]
//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
//!     // 创建 Kubernetes 客户端
//!     let k8s_client = KubernetesClient::new().await?;
//!     
//!     // 启用服务发现
//!     let service_discovery = K8sServiceDiscovery::new(k8s_client.clone());
//!     
//!     // 获取服务列表
//!     let services = service_discovery.discover_services("default").await?;
//!     println!("发现 {} 个服务", services.len());
//!     
//!     Ok(())
//! }
//! ```
//!
//! ## 模块结构
//!
//! - [`client`] - Kubernetes API 客户端
//! - [`discovery`] - 服务发现功能
//! - [`config`] - 配置管理
//! - [`health`] - 健康检查
//! - [`operator`] - Operator 支持
//! - [`utils`] - 工具函数

pub mod client;
pub mod discovery;
pub mod config;
pub mod integration;

#[cfg(feature = "health-check")]
pub mod health;

#[cfg(feature = "operator")]
pub mod operator;

pub mod utils;
pub mod error;

// 重新导出主要类型
pub use client::{KubernetesClient, K8sClientConfig};
pub use discovery::{K8sServiceDiscovery, ServiceInfo};
pub use config::{K8sConfigManager, ConfigSource};
pub use error::{K8sError, K8sResult};

#[cfg(feature = "health-check")]
pub use health::{HealthChecker, HealthStatus, ReadinessProbe, LivenessProbe};

#[cfg(feature = "operator")]
pub use operator::{CustomResource, Controller, OperatorConfig};

/// 便捷的预导入模块
///
/// 包含最常用的类型和功能，可以通过 `use rustcloud_kubernetes::prelude::*;` 导入。
pub mod prelude {
    // 客户端
    pub use crate::client::{KubernetesClient, K8sClientConfig};
    
    // 服务发现
    pub use crate::discovery::{K8sServiceDiscovery, ServiceInfo, ServiceEndpoint};
    
    // 配置管理
    pub use crate::config::{K8sConfigManager, ConfigSource, ConfigWatcher};
    
    // 集成功能
    pub use crate::integration::{
        K8sIntegrationConfig, K8sServiceRegistry, K8sIntegrationBuilder,
    };
    
    // 错误处理
    pub use crate::error::{K8sError, K8sResult};
    
    // 健康检查
    #[cfg(feature = "health-check")]
    pub use crate::health::{HealthChecker, HealthStatus, ReadinessProbe, LivenessProbe};
    
    // Operator 支持
    #[cfg(feature = "operator")]
    pub use crate::operator::{CustomResource, Controller, OperatorConfig};
    
    // 工具函数
    pub use crate::utils::{K8sUtils, NamespaceManager, LabelSelector};
    
    // 外部依赖
    pub use async_trait::async_trait;
    pub use kube::Client;
    pub use k8s_openapi::api::core::v1::{Pod, Service, ConfigMap, Secret};
    pub use serde::{Deserialize, Serialize};
    pub use std::collections::HashMap;
    pub use std::sync::Arc;
}

/// 版本信息
pub const VERSION: &str = env!("CARGO_PKG_VERSION");

/// 模块初始化
pub fn init() {
    tracing::info!("RustCloud Kubernetes v{} 已初始化", VERSION);
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_version() {
        assert!(!VERSION.is_empty());
    }

    #[test]
    fn test_init() {
        init(); // 应该不会 panic
    }
}